<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>晴风的博客 - 晴风</title><meta name="keywords" content="···计算机,软工,Android,iOS,macOS,Linux,C,C++,Java,Python,Objective-C,Swift···"><meta name="author" content="XQ"><meta name="copyright" content="XQ"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta http-equiv="Cache-Control" content="no-transform"><meta http-equiv="Cache-Control" content="no-siteapp"><meta property="og:type" content="website">
<meta property="og:title" content="晴风的博客">
<meta property="og:url" content="https://blog.xq99.org/">
<meta property="og:site_name" content="晴风的博客">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://blog.xq99.org/null">
<meta property="article:author" content="XQ">
<meta property="article:tag" content="···计算机,软工,Android,iOS,macOS,Linux,C,C++,Java,Python,Objective-C,Swift···">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.xq99.org/null"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="https://blog.xq99.org/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><script>var GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: undefined,
  translate: undefined,
  noticeOutdate: undefined,
  highlight: undefined,
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: undefined,
  source: {
    jQuery: 'https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js',
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/js/jquery.justifiedGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/css/justifiedGallery.min.css'
    },
    fancybox: {
      js: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js',
      css: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isanchor: false
};

var saveToLocal = {
  set: function setWithExpiry(key, value, ttl) {
    const now = new Date()
    const expiryDay = ttl * 86400000
    const item = {
      value: value,
      expiry: now.getTime() + expiryDay,
    }
    localStorage.setItem(key, JSON.stringify(item))
  },

  get: function getWithExpiry(key) {
    const itemStr = localStorage.getItem(key)

    if (!itemStr) {
      return undefined
    }
    const item = JSON.parse(itemStr)
    const now = new Date()

    if (now.getTime() > item.expiry) {
      localStorage.removeItem(key)
      return undefined
    }
    return item.value
  }
}

// https://stackoverflow.com/questions/16839698/jquery-getscript-alternative-in-native-javascript
const getScript = url => new Promise((resolve, reject) => {
  const script = document.createElement('script')
  script.src = url
  script.async = true
  script.onerror = reject
  script.onload = script.onreadystatechange = function() {
    const loadState = this.readyState
    if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
    script.onload = script.onreadystatechange = null
    resolve()
  }
  document.head.appendChild(script)
})</script><script id="config_change">var GLOBAL_CONFIG_SITE = { 
  isPost: false,
  isHome: true,
  isHighlightShrink: false,
  isToc: false,
  postUpdate: '2020-12-16 02:44:26'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(function () {  window.activateDarkMode = function () {
    document.documentElement.setAttribute('data-theme', 'dark')
    if (document.querySelector('meta[name="theme-color"]') !== null) {
      document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
    }
  }
  window.activateLightMode = function () {
    document.documentElement.setAttribute('data-theme', 'light')
   if (document.querySelector('meta[name="theme-color"]') !== null) {
      document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
    }
  }
  const autoChangeMode = 'false'
  const t = saveToLocal.get('theme')
  if (autoChangeMode === '1') {
    const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
    const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
    const isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches
    const hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified
    if (t === undefined) {
      if (isLightMode) activateLightMode()
      else if (isDarkMode) activateDarkMode()
      else if (isNotSpecified || hasNoSupport) {
        const now = new Date()
        const hour = now.getHours()
        const isNight = hour <= 6 || hour >= 18
        isNight ? activateDarkMode() : activateLightMode()
      }
      window.matchMedia('(prefers-color-scheme: dark)').addListener(function (e) {
        if (saveToLocal.get('theme') === undefined) {
          e.matches ? activateDarkMode() : activateLightMode()
        }
      })
    } else if (t === 'light') activateLightMode()
    else activateDarkMode()
  } else if (autoChangeMode === '2') {
    const now = new Date()
    const hour = now.getHours()
    const isNight = hour <= 6 || hour >= 18
    if (t === undefined) isNight ? activateDarkMode() : activateLightMode()
    else if (t === 'light') activateLightMode()
    else activateDarkMode()
  } else {
    if (t === 'dark') activateDarkMode()
    else if (t === 'light') activateLightMode()
  }const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
   if (asideStatus === 'hide') {
     document.documentElement.classList.add('hide-aside')
   } else {
     document.documentElement.classList.remove('hide-aside')
   }
}})()</script><meta name="generator" content="Hexo 5.2.0"><link rel="alternate" href="/atom.xml" title="晴风的博客" type="application/atom+xml">
<link rel="stylesheet" href="/css/prism-tomorrow.css" type="text/css"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="author-avatar"><img class="avatar-img" src="/null" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data"><div class="data-item is-center"><div class="data-item-link"><a href="/archives/"><div class="headline">文章</div><div class="length-num">18</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/tags/"><div class="headline">标签</div><div class="length-num">20</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/categories/"><div class="headline">分类</div><div class="length-num">1</div></a></div></div></div><hr/></div></div><div id="body-wrap"><header class="full_page" id="page-header"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">晴风的博客</a></span><div id="menus"><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">晴风的博客</h1><div id="site-subtitle"><span id="subtitle"></span></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/18.%E9%98%85%E8%AF%BB%E8%BF%9B%E5%BA%A6/" title="阅读进度">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="阅读进度"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/18.%E9%98%85%E8%AF%BB%E8%BF%9B%E5%BA%A6/" title="阅读进度">阅读进度</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T08:08:59.000Z" title="发表于 2020-12-03 16:08:59">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content"></div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/16.%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="移动端学习网站">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="移动端学习网站"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/16.%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="移动端学习网站">移动端学习网站</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T07:11:13.000Z" title="发表于 2020-12-03 15:11:13">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">1.Native原生AndroidiOSSwift
2.跨平台FlutterReact Native
</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/17.OpenGL%E5%AD%A6%E4%B9%A0/" title="OpenGL学习">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="OpenGL学习"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/17.OpenGL%E5%AD%A6%E4%B9%A0/" title="OpenGL学习">OpenGL学习</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T07:11:13.000Z" title="发表于 2020-12-03 15:11:13">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">1.入门transformation 变换projection 投影vertices 顶点
shader 着色器texture 纹理blending 混合
2.步骤剪裁 -&gt; 投影 -&gt; 光栅化
参考LearnOpenGL
</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/15.%E9%A1%B9%E7%9B%AE%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="项目学习网站">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="项目学习网站"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/15.%E9%A1%B9%E7%9B%AE%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="项目学习网站">项目学习网站</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T07:09:56.000Z" title="发表于 2020-12-03 15:09:56">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">分享 GitHub 上 有趣、入门级的开源项目
</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/13.%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="前端学习网站">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="前端学习网站"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/13.%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="前端学习网站">前端学习网站</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T07:04:25.000Z" title="发表于 2020-12-03 15:04:25">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">现代 JavaScript 教程Vue.jsReact.js大前端面试宝典 - 图解前端我的第一本书
</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/14.%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="算法学习网站">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="算法学习网站"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/14.%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="算法学习网站">算法学习网站</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T07:04:18.000Z" title="发表于 2020-12-03 15:04:18">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">五分钟学算法算法小抄algorithm-visualizerVisuAlgo小浩算法力扣加加Acwing
</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/12.%E5%90%8E%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="后端学习网站">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="后端学习网站"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/12.%E5%90%8E%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="后端学习网站">后端学习网站</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T06:55:34.000Z" title="发表于 2020-12-03 14:55:34">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">1.Java技术栈Java 全栈知识体系CycNoteJavaGuide
2.C++技术栈C++那些事
3.PythonPython中文学习大本营
</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/11.NPM%E4%B8%8EYarn%E6%BA%90%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7/" title="NPM与Yarn源管理工具">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="NPM与Yarn源管理工具"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/11.NPM%E4%B8%8EYarn%E6%BA%90%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7/" title="NPM与Yarn源管理工具">NPM与Yarn源管理工具</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T06:51:44.000Z" title="发表于 2020-12-03 14:51:44">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">1.NRMnpm install -g nrm
nrm ls
nrm use taobao
nrm test
2.YRMinstall -g yrm
yrm ls
yrm use taobao
yrm test
3.CGRnpm install -g cgr
</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/10.%E8%AF%BB%E3%80%8A%E5%A6%82%E4%BD%95%E8%87%AA%E5%AD%A6Android%E3%80%8B%E6%9C%89%E6%84%9F/" title="读《如何自学Android》有感">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="读《如何自学Android》有感"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/10.%E8%AF%BB%E3%80%8A%E5%A6%82%E4%BD%95%E8%87%AA%E5%AD%A6Android%E3%80%8B%E6%9C%89%E6%84%9F/" title="读《如何自学Android》有感">读《如何自学Android》有感</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T06:51:03.000Z" title="发表于 2020-12-03 14:51:03">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">Read the fucking source code
1.基础
Java基础 《Java编程思想》，《Effective Java》，《Java并发编程实战》，《Java性能优化权威指南》，《Java虚拟机》
Android基础 

2.进阶
阅读源码：
阅读博客
阅读书籍

3.其他
好奇心
知识点的整理总结
天道酬勤
自己解决&gt;求助他人
静下心来+持之以恒+专研

#参考如何自学Android
</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/9.iOS%E5%BC%80%E5%8F%91%E7%9F%A5%E8%AF%86%E7%82%B9%E9%9B%86%E5%90%88/" title="iOS开发知识集合">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="iOS开发知识集合"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/9.iOS%E5%BC%80%E5%8F%91%E7%9F%A5%E8%AF%86%E7%82%B9%E9%9B%86%E5%90%88/" title="iOS开发知识集合">iOS开发知识集合</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T06:40:21.000Z" title="发表于 2020-12-03 14:40:21">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">1.Runtime四部曲iOS 开发：『Runtime』详解（一）基础知识 iOS 开发：『Runtime』详解（二）Method SwizzlingiOS 开发：『Runtime』详解（三）Category 底层原理iOS 开发：『Runtime』详解（四）获取类详细属性、方法
2.iOS探索系列iOS探索 内存管理篇
3.《Effective Objective-C》干货三部曲概念篇规范篇技巧篇
4.《Objective-C 高级编程》干货三部曲引用计数篇 Blocks篇GCD篇
5.『Blocks』详尽总结基本使用底层原理
6.RunloopRunLoop 源码阅读iOS底层原理探究-RunloopiOS底层原理总结 - RunLoop
7.iOS 开发：『Crash 防护系统』Unrecognized Selector KVO 防护KVC 防护iOS Crash防护一文读懂崩溃原理
8.多线程iOS多线程：『GCD』详尽总结iOS多线程：『pthread、NSThread』详尽总结iOS多线程：『NSOperation、NSOperationQueue』详尽总结
9.网络iOS ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/8.%E6%B7%B1%E5%BA%A6%E6%8E%A2%E7%B4%A2C++%E5%AF%B9%E8%B1%A1%E6%A8%A1%E5%9E%8B/" title="深度探索C++对象模型">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="深度探索C++对象模型"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/8.%E6%B7%B1%E5%BA%A6%E6%8E%A2%E7%B4%A2C++%E5%AF%B9%E8%B1%A1%E6%A8%A1%E5%9E%8B/" title="深度探索C++对象模型">深度探索C++对象模型</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T06:36:44.000Z" title="发表于 2020-12-03 14:36:44">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">深度探索C++对象模型深入探索C++对象模型
</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/7.%E6%94%B6%E8%97%8F%E5%A4%B9/" title="收藏夹">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="收藏夹"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/7.%E6%94%B6%E8%97%8F%E5%A4%B9/" title="收藏夹">收藏夹</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T06:33:55.000Z" title="发表于 2020-12-03 14:33:55">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">1.新的1.掘金J_Knight_行走少年郎FengyunSky
2.简书chilim
3.独立博客唐巧GityuanSMSLIThalfrostibiremeimalan萌面大道C++那些事RobinHran陈明标Gracker程序员自由之路图拉鼎RegulusYiwei Gong曹文斯袁辉辉洛尘曦脑洞前端刘望舒
4.GithubiOS日常积累所看到的面试题集锦iOS-InterviewQuestion-collectionJHBlog经济学人、纽约客杂志
2.旧的我维护的收藏夹
“一知半解”是一件危险的事情。一名【合格】前端工程师的自检清单
2019.05.22关于谷歌云的Blog工具类网站大佬-不错的导航站电影名单-资源站西瓜播放器ACG盒子-图源OfficeTools-工具Behance-设计展示网站万能命令-在线效率工具平台黑果小兵-Blog
2019.05.17全历史
2019.05.14GuiToolsSoJson在线
2019.05.11Grabient-渐变色制作Github趋势*分享软件开发视频
2019.05.10*iView-UI框架*Elements-UI框架 ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/6.%E7%BA%A2%E9%BB%91%E6%A0%91%E7%9A%84%E5%AE%9E%E7%8E%B0/" title="红黑树的实现">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="红黑树的实现"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/6.%E7%BA%A2%E9%BB%91%E6%A0%91%E7%9A%84%E5%AE%9E%E7%8E%B0/" title="红黑树的实现">红黑树的实现</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T06:32:42.000Z" title="发表于 2020-12-03 14:32:42">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">#include "main.h"

using namespace std;

int main(int argc, char *argv[]) &amp;#123;
    RBT *rbt = new RBT();

    int n = 0;
    cin >> n;
    for (int i = 0; i &lt; n; ++i) &amp;#123;
        int temp = 0;
        cin >> temp;
        rbt->add(new RBTNode(temp, nullptr, nullptr, nullptr, "R"));
    &amp;#125;

    rbt->preOrder(rbt->getRoot());
    cout &lt;&lt; endl;
    rbt->inOrder(rbt->getRoot());
    cout &lt;&lt; endl;
    rbt->postOrder(rbt->getRoot());
    cout &lt;&lt; endl;
    rbt- ...</div></div></div><div class="recent-post-item"><div class="post_cover right_radius"><a href="/posts/5.Git%E5%91%BD%E4%BB%A4/" title="Git命令">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Git命令"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/5.Git%E5%91%BD%E4%BB%A4/" title="Git命令">Git命令</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T06:25:22.000Z" title="发表于 2020-12-03 14:25:22">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">1. 远程资源库（origin）本地的代码修改、提交都是origin的工作副本。
git clone 远程资源库链接
2. 本地资源库常用三连
git add . &amp;&amp; git commit -m “” &amp;&amp; git push 
本地资源库维护三棵树（工作目录，缓存区stage，本地资源库HEAD）
git add . 是把工作目录的修改暂存到缓存（stage）中，添加index
git commit -m "" 把本次缓存中的修改提交到本地资源库，此时HEAD指向最近一次的提交
git pull 之后自动合并解决冲突后再 git push 推送到远程资源库，同步功能
# 通用化

# 暂存
git add 
git add *

# 提交
git commit -m ""

# 推送
git push
git push origin 
git remote add origin  # 如果没有克隆现有仓库，需要连接

# 分支
git checkout -b newBranchAndChange # 从此时的分支新建分支并且换过去
git checko ...</div></div></div><div class="recent-post-item"><div class="post_cover left_radius"><a href="/posts/4.%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%B5%85%E8%B0%88/" title="计算机网络浅谈">     <img class="post_bg" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="计算机网络浅谈"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/4.%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%B5%85%E8%B0%88/" title="计算机网络浅谈">计算机网络浅谈</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-12-03T06:24:24.000Z" title="发表于 2020-12-03 14:24:24">2020-12-03</time></span><span class="article-meta"><span class="article-meta__separator">|</span><i class="fas fa-inbox article-meta__icon"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">1. HTTP HTTPS什么是HTTP HTTPS？Hyper Text Transfer Protocal 超文本传输协议，是实现数据通信的基石
HTTP协议用于客户端和服务端之间的通信，通过请求和响应的交互达成通信（肯定是先从客户端开始建立通信的，服务器端在没有接收到任何请求之前不会发送响应）
HTTP是无状态的协议，为了实现期望的保存状态的功能，引入了Cookie技术
请求服务器的方法 post get put head delete options trace connect
GET 请求资源，服务器解析后返回数据，数据在URL可见，直接传输不安全，记得转码
POST 传输实体数据，安全，数据在请求体里面
× PUT 传输文件，鉴于HTTP／1.1的PUT方法自身不带验证机制，任何人都可以上传文件，存在安全性问题，因此一般的网站不建议使用该方法。若配合Web应用程序的验证机制，或架构设计采用REST标准的同类Web网站，就可能会开放使用PUT方法。
HEAD 同GET类似，只是为了获得报文首部，用于确认URL有效性以及更新日期
× DELETE 和PUT一样不带验证
OPTI ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="extend next" rel="next" href="/page/2/"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside_content" id="aside_content"><div class="card-widget card-info"><div class="card-content"><div class="card-info-avatar is-center"><img class="avatar-img" src="/null" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/><div class="author-info__name">XQ</div><div class="author-info__description"></div></div><div class="card-info-data"><div class="card-info-data-item is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">18</div></a></div><div class="card-info-data-item is-center"><a href="/tags/"><div class="headline">标签</div><div class="length-num">20</div></a></div><div class="card-info-data-item is-center"><a href="/categories/"><div class="headline">分类</div><div class="length-num">1</div></a></div></div><a class="button--animated" id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/xxxxxx"><i class="fab fa-github"></i><span>Follow Me</span></a></div></div><div class="card-widget card-announcement"><div class="card-content"><div class="item-headline"><i class="fas fa-bullhorn card-announcement-animation"></i><span>公告</span></div><div class="announcement_content">This is my Blog</div></div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="card-content"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/posts/18.%E9%98%85%E8%AF%BB%E8%BF%9B%E5%BA%A6/" title="阅读进度"><img src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="阅读进度"/></a><div class="content"><a class="title" href="/posts/18.%E9%98%85%E8%AF%BB%E8%BF%9B%E5%BA%A6/" title="阅读进度">阅读进度</a><time datetime="2020-12-03T08:08:59.000Z" title="发表于 2020-12-03 16:08:59">2020-12-03</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/16.%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="移动端学习网站"><img src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="移动端学习网站"/></a><div class="content"><a class="title" href="/posts/16.%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="移动端学习网站">移动端学习网站</a><time datetime="2020-12-03T07:11:13.000Z" title="发表于 2020-12-03 15:11:13">2020-12-03</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/17.OpenGL%E5%AD%A6%E4%B9%A0/" title="OpenGL学习"><img src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="OpenGL学习"/></a><div class="content"><a class="title" href="/posts/17.OpenGL%E5%AD%A6%E4%B9%A0/" title="OpenGL学习">OpenGL学习</a><time datetime="2020-12-03T07:11:13.000Z" title="发表于 2020-12-03 15:11:13">2020-12-03</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/15.%E9%A1%B9%E7%9B%AE%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="项目学习网站"><img src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="项目学习网站"/></a><div class="content"><a class="title" href="/posts/15.%E9%A1%B9%E7%9B%AE%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="项目学习网站">项目学习网站</a><time datetime="2020-12-03T07:09:56.000Z" title="发表于 2020-12-03 15:09:56">2020-12-03</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/13.%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="前端学习网站"><img src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/img/default.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="前端学习网站"/></a><div class="content"><a class="title" href="/posts/13.%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/" title="前端学习网站">前端学习网站</a><time datetime="2020-12-03T07:04:25.000Z" title="发表于 2020-12-03 15:04:25">2020-12-03</time></div></div></div></div></div><div class="card-widget card-categories"><div class="card-content"><div class="item-headline"><i class="fas fa-folder-open"></i><span>分类</span></div><ul class="card-category-list" id="aside-cat-list">
            <li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%8A%80%E6%9C%AF/"><span class="card-category-list-name">技术</span><span class="card-category-list-count">18</span></a></li>
            
            </ul></div></div><div class="card-widget card-tags"><div class="card-content"><div class="item-headline"><i class="fas fa-tags"></i><span>标签</span></div><div class="card-tag-cloud"><a href="/tags/Android/" style="font-size: 1.1em; color: #999">Android</a> <a href="/tags/C/" style="font-size: 1.5em; color: #99a9bf">C++</a> <a href="/tags/HTTP/" style="font-size: 1.3em; color: #99a1ac">HTTP</a> <a href="/tags/HTTPS/" style="font-size: 1.3em; color: #99a1ac">HTTPS</a> <a href="/tags/OpenGL/" style="font-size: 1.1em; color: #999">OpenGL</a> <a href="/tags/iOS/" style="font-size: 1.1em; color: #999">iOS</a> <a href="/tags/%E5%89%8D%E7%AB%AF/" style="font-size: 1.1em; color: #999">前端</a> <a href="/tags/%E5%90%8E%E7%AB%AF/" style="font-size: 1.1em; color: #999">后端</a> <a href="/tags/%E5%AF%B9%E8%B1%A1/" style="font-size: 1.1em; color: #999">对象</a> <a href="/tags/%E6%94%B6%E8%97%8F%E5%A4%B9/" style="font-size: 1.1em; color: #999">收藏夹</a> <a href="/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/" style="font-size: 1.1em; color: #999">数据结构</a> <a href="/tags/%E6%BA%90%E7%AE%A1%E7%90%86/" style="font-size: 1.1em; color: #999">源管理</a> <a href="/tags/%E7%A7%BB%E5%8A%A8%E7%AB%AF/" style="font-size: 1.1em; color: #999">移动端</a> <a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size: 1.1em; color: #999">算法</a> <a href="/tags/%E7%BA%A2%E9%BB%91%E6%A0%91/" style="font-size: 1.1em; color: #999">红黑树</a> <a href="/tags/%E7%BD%91%E7%BB%9C/" style="font-size: 1.3em; color: #99a1ac">网络</a> <a href="/tags/%E8%BD%AF%E5%AE%9E%E5%8A%9B/" style="font-size: 1.1em; color: #999">软实力</a> <a href="/tags/%E9%80%9A%E7%94%A8/" style="font-size: 1.1em; color: #999">通用</a> <a href="/tags/%E9%98%85%E8%AF%BB/" style="font-size: 1.1em; color: #999">阅读</a> <a href="/tags/%E9%A1%B9%E7%9B%AE/" style="font-size: 1.1em; color: #999">项目</a></div></div></div><div class="card-widget card-archives"><div class="card-content"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/12/"><span class="card-archive-list-date">十二月 2020</span><span class="card-archive-list-count">18</span></a></li></ul></div></div><div class="card-widget card-webinfo"><div class="card-content"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">18</div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2020-12-15T18:44:26.439Z"></div></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2020 By XQ</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><div class="js-pjax"><script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></div></body></html>